package com.cc.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;


//接口是一组功能 的标准，约定----证
public class JdkHk  implements InvocationHandler{//黑客类
    
    private  Object target;
    public  JdkHk(Object target) {
        this.target =target;
    }
    //生产代理对象的
    public <T> Object createProxy() {
        //参数1：类加载器  参数2：目标类接口的class  参数3：invocationHandler（黑客）
        //底层使用字节码拼接技术，将目标对象与黑客对象柔和成代理对象
        return Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), target.getClass().getInterfaces(), this);
    }
    //入侵的方法
    //proxy:代理对象   method:目标方法  args:目标方法的实参
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("黑客入侵前");   
        System.out.println("鉴权成功.....");
        //修改参数
        args[0]=100;
        args[1]=9;
        //调用目标方法
        Object result  = method.invoke(target, args);
        System.out.println("黑客入侵后");
        System.out.println("记录日志成功.....");
        return result;
    }

}
